﻿ 
namespace Core.Items.Modules
{
    /*

		MetaGroup                      = Shield
		Group                          = ShieldGenerators
		Size                           = Medium
		Module                         = flawed medium shield generator
		CpuUsage                       = 65.00 TF
		ReactorUsage                   = 250.00 RP
		Type                           = Active
		Slot                           = Legs
		TechnologicalLevel             = T0
		Mass                           = 400.00 kg
		PackedVolume                   = 0.25 U
		Volume                         = 0.50 U
		AccumulatorConsumption         = 12.50 AP
		CycleTime                      = 5.00 sec
		AbsorptionRatio                = 0.833 AP/HP
		ShieldRadius                   = 8 m
    */

    using System;
    using Base;
    using Contracts.Enums;
    using Contracts.Interfaces;
    using Extensions;
    using Features;
    
    /// <summary>
    /// Flawed medium shield generator module class
    /// </summary>
    /// <remarks>File generated on 31/10/2011 16:00:56</remarks>
    public sealed class FlawedMediumShieldGenerator : ModuleBase
    {
        /// <summary>
        /// Create a new instance of the <see cref="FlawedMediumShieldGenerator"/> class.
        /// </summary>
        public FlawedMediumShieldGenerator()
            : base(
            "Flawed medium shield generator",
            "",
            ModuleMetaGroupsEnum.Shield,
            ModuleGroupsEnum.ShieldGenerators,
            TechnologyLevelsEnum.Level0,
            SizesEnum.Medium,
            new LazyFeature[] { 
				new LazyFeature(typeof(ShieldCpuUsage<double>),65.00),
				new LazyFeature(typeof(ShieldReactorUsage<double>),250.00),
				new LazyFeature(typeof(ModuleMass<double>),400.00),
				new LazyFeature(typeof(AccumulatorUsage<double>),12.50),
				new LazyFeature(typeof(ShieldCycleTime<double>),5.00),
				new LazyFeature(typeof(ShieldAbsorptionRatio<double>),0.833),
				new LazyFeature(typeof(ShieldRadius<double>),8), },
            null,
            new IModifier[] { 
				new Modifier( FeatureTypesEnum.Robot, FeaturesEnum.RobotMass, 400.00 ){ IsVisible = false }, } )
        {
        }

        /// <summary>
        /// Obtains the activation type
        /// </summary>
        public override ModuleActivationTypesEnum ActivationType
        {
            get { return ModuleActivationTypesEnum.Active; }
        }
        /// <summary>
        /// Obtains the module slot group 
        /// </summary>
        public override SlotGroupsEnum SlotGroup
        {
            get { return SlotGroupsEnum.Legs; }
        }
        /// <summary>
        /// Obtains the module slot type 
        /// </summary>
        public override SlotTypesEnum SlotType
        {
            get { return SlotTypesEnum.Modules; }
        }
    }
}